import request from "../utils/request";

/**
 * 封装校外教学点管理相关的API请求
 */
class TeachingPointRequest {

    /**
     * 新增教学点
     * @param {string} pointCode - 教学点代码，唯一
     * @param {string} pointName - 教学点名称
     * @param {string} address - 详细地址
     * @param {string} managerName - 负责人姓名
     * @param {string} managerPhone - 负责人电话
     * @param {number} [status=1] - 状态 (1:合作中, 0:已终止)
     * @returns {Promise<object>} - 创建成功的教学点对象
     */
    async add(pointCode, pointName, address, managerName, managerPhone, status = 1) {
        const newPoint = await request({
            url: '/teaching-points',
            method: 'post',
            data: {
                pointCode,
                pointName,
                address,
                managerName,
                managerPhone,
                status
            },
        });
        return newPoint;
    }

    /**
     * 查询教学点列表
     * @param {object} [options={}] - 包含分页和筛选参数的对象
     * @param {number} [options.page=1] - 页码
     * @param {number} [options.size=10] - 每页数量
     * @param {string} [options.pointName] - 按教学点名称模糊查询
     * @param {number} [options.status] - 按状态筛选 (1:合作中, 0:已终止)
     * @returns {Promise<object>} - 标准分页列表数据
     */
    async getList({ page, size, pointName, status } = {}) {
        const listData = await request({
            url: '/teaching-points',
            method: 'get',
            params: {
                page,
                size,
                pointName,
                status
            },
        });
        return listData;
    }

    /**
     * 获取单个教学点详情
     * @param {number|string} id - 教学点ID
     * @returns {Promise<object>} - 单个教学点详情
     */
    async getById(id) {
        const pointDetail = await request({
            url: `/teaching-points/${id}`,
            method: 'get',
        });
        return pointDetail;
    }

    /**
     * 更新教学点信息
     * @param {number|string} id - 要更新的教学点ID
     * @param {object} pointData - 包含待更新字段的对象
     * @returns {Promise<object>} - 更新后的教学点对象
     */
    async update(id, pointData) {
        const updatedPoint = await request({
            url: `/teaching-points/${id}`,
            method: 'put',
            data: pointData,
        });
        return updatedPoint;
    }

    /**
     * 删除教学点
     * @param {number|string} id - 要删除的教学点ID
     * @returns {Promise<null>}
     */
    async delete(id) {
        const result = await request({
            url: `/teaching-points/${id}`,
            method: 'delete',
        });
        return result;
    }
}

// 导出类的实例，方便在其他地方直接调用方法
export default new TeachingPointRequest();